// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	3/19/2014 11:25:42 AM				
// -----------------------------

#ifndef _ITexture2D_h
#define _ITexture2D_h

#include "DxCommon.h"

namespace DxLib
{
	
	class IRenderDevice;

	class DXLIB ITexture2D
	{
	public:
		// Create the Texture
		static ITexture2D*	Create(IRenderDevice* lpDevice, UInt32 uWidth, UInt32 uHeight, Format format, Float* lpData);
		// Create the Texture as a Cubemap
		static ITexture2D*	CreateCubemap(IRenderDevice* lpDevice, UInt32 uWidth, UInt32 uHeight, Format format, Float* lpData, SizeT surfaceSize);
		// Load Texture from File
		static ITexture2D*	LoadFromFile(IRenderDevice* lpDevice, const TChar* File);
		// Load Texture from File as Cubemap
		static ITexture2D*	LoadFromFileCubemap(IRenderDevice* lpDevice, const TChar* File);

		// Release the Interface
		virtual void		Release() = 0;

		// Save Texture to File
		virtual Bool		SaveToFile(const TChar* lpFile, ImageFileFormat eFileFormat) const = 0;

		// Get the Texture Width
		virtual UInt32		GetWidth() const = 0;
		// Get the Texture Height
		virtual UInt32		GetHeight() const = 0;
	};

}

#endif